package org.example.other;

/**
 * 自定义业务异常类,用来抛出业务层的异常
 * 继承官方的运行时异常RuntimeException
 * 自定义异常继承Exception也可以,继承RuntimeException也可以
 * 区别: 继承Exception是编译时异常, 编译时必须try-catch捕捉活throws向上抛
 *      继承RuntimeException是运行时异常, 编译时可以不捕捉
 * 官方的异常类只能携带一个String类型的异常消息
 * 我们现在需要携带两个异常消息: 错误码和错误信息
 */
public class ServiceException extends RuntimeException {
    // 使用自定义的枚举类型作为自定义异常的成员变量
    private ErrorEnum errorEnum;

    public ServiceException(ErrorEnum errorEnum) {
        // 把枚举对象的消息取出来, 传递给父类构造方法, 用于初始化父类中的异常消息
        super(errorEnum.getMessage());
        this.errorEnum = errorEnum;
    }

    // 对外暴露一个get方法, 用于返回这个枚举对象
    public ErrorEnum getErrorEnum() {
        return errorEnum;
    }
}
